import json
data = {
    'nanbei':"haha",
    "a":[1,2,3,4,5],
    "b":(1,2,3)
}
"""print(type(json.dumps(data))) # <class 'str'>
x = json.dumps(data)
print(x) #  <class 'str'>
print(json.loads(x)) # <class "dict">
print(type(json.loads(x))) # <class "dict">"""

with open("json_text.txt",'w',encoding='utf-8') as f:
    """
    w模式写入文件：如果这个文件之前没有存在，那么会先创建文件再去写入
    open(第一个参数：文本名称，第二个参数：w写入/r读取,第三个参数：编码)
    """
    json.dump(data,f)
# 第一个参数需要传递文件的绝对路径:D:\23-issue-courseware-library\day7\json_text.txt
with open("json_text.txt",'r',encoding='utf-8') as f:
    """
    r模式：读取文件
    注意：不要用不符合的模式去做文件的i/o操作
    """
    print(f.read())
    # print(json.load(f))
    # f.write("123") # 会报错
"""
print("=======================")
# 没有用with的方式打开文件
f = open('json_text.txt','r',encoding='utf-8')
print(f.read())
f.close() # 关闭文件
"""
with open('b.txt','wt',encoding='utf-8') as f:
    """
    w：覆盖写入，每一次写入的新内容都会覆盖老的
    """
    # 不能读，返回False
    # print(f.readable())
    # 可以写，返回True
    # print(f.writable())
    # f.write("大\n")
    # f.write("大\n")
    # f.write("小\n")
    # 也可以一次写入多行
    # f.write('111\n222\n333\n')
    info = ['longzai\n','小白\n','小张\n']
    # for line in info:
    #     f.write(line)
    f.writelines(info)
with open('b.txt','rt',encoding='utf-8') as f:
    # res1 = f.read()
    # print(res1)
    #
    # res2 = f.read()
    # print(f"res2--->{res2}") # 因为之前都读完了，所以后面再去读的时候 就都是空的了

    # 判断rt模式是否可读
    print(f.readable()) # True

    # 判断rt模式是否可写
    print(f.writable()) # False

    # 使用readline读取,通过文件指针读取，一个字占1位
    # print(f.readline(7))
    # print(f.readline(1))

    # 使用readlines
    # print(f.readlines())
with open('b.txt','a',encoding='utf-8') as f:
    """
    a模式是追加写入文件内容，之前的内容不会被覆盖，从最后一个文件指针开始写
    """
    f.write("小黑\n")

# with open("name.txt",'w',encoding='utf-8') as f:
#     f.write("张伟超\n刘楠\n")

# 修改文件内容：
"""
第一步：拿到全部的数据
第二部：使用字符串的内置方法：replace去替换
"""
with open("name.txt",'r',encoding='utf-8') as f:
    all_data = f.read() # 先把结果拿到

with open('name.txt','w',encoding='utf-8') as f:
    new_all_data = all_data.replace("张伟超","赵伟超")
    f.write(new_all_data)



















